package com.lpwa.common.utils;

public class StringConvert {
	public static  byte[] string2Bytes(String str) {

		if (str==null || str.equals("")) {
			return null;
		}

		str = str.toUpperCase();
		int length = str.length() / 2;
		char[] strChar = str.toCharArray();
		byte[] bt = new byte[length];

		for (int i = 0; i < length; i++) {
			int index = i * 2;
			bt[i] = (byte) (char2Byte(strChar[index]) << 4 | char2Byte(strChar[index + 1]));
		}

		return bt;
	}

	private static byte char2Byte(char ch) {
		return (byte) "0123456789ABCDEF".indexOf(ch);
	}

	public final static long getLong(byte[] bt, boolean isAsc) {
		//BIG_ENDIAN
		if (bt == null) {
			throw new IllegalArgumentException("byte array is null.");
		}
		if (bt.length > 8) {
			throw new IllegalArgumentException("byte array size more than 8.");
		}
		long result = 0;
		if (isAsc)
			for (int i = bt.length - 1; i >= 0; i--) {
				result <<= 8;
				result |= (bt[i] & 0x00000000000000ff);
			}
		else
			for (int i = 0; i < bt.length; i++) {
				result <<= 8;
				result |= (bt[i] & 0x00000000000000ff);
			}
		return result;
	}
}
